/**
 * 工程化定义：一切以提高效率、降低成本、质量保证为目的的手段都属于【工程化】，工程化不等于某个具体的工具，工程化是指项目整体的规划和架构，工具只是落地实施的手段
 * 
 * 工程化主要解决的问题
 *  + 传统语言或语法的弊端，如需要使用ES6+的新特性，但是存在兼容问题，亦或是使用Less/Sass/PostCSS时，运行环境不能支持支持
 *  + 无法使用模块化/组件化，来提高项目的可维护性，但运行环境不能直接支持
 *  + 重复的机械式工作，部署上线前需要手动压缩代码及资源文件、部署过程需要手动上传代码到服务器
 *  + 代码风格统一、质量保证，多人协作开发时无法硬性统一大家的代码风格，从仓库中pull回来的代码质量无法保证
 *  + 依赖后端服务接口支持，需要等待后端服务接口提前完成
 *  + 整体依赖后端项目，如以前的jsp开发，MVC在java端，前端只输出页面模版，需依赖java端的稳定，才能输出前端页面
 * 
 * 工程自动化流程
 *  + 创建项目：使用脚手架工具CLI自动搭建，创建项目结构、创建特定类型文件
 *  + 编码：格式化代码、校验代码风格、编译/构建/打包
 *  + 预览/测试：Web Server热更新、Mock模拟接口、Live Reloading、HMR、Source Map定位源代码
 *  + 提交：Git Hooks提交前做源码检查、Lint-Staged、持续集成
 *  + 部署：CI/CD、自动发布
 * 
 * 前端工程化的道路上，Node.js居功至伟
 */